import request from '@/utils/request'

// WiFi认证相关API

/**
 * 扫码获取会话
 * @param {string} deviceId 设备ID
 * @returns {Promise} 会话信息
 */
export function scanSession(deviceId) {
  return request({
    url: '/wifi/auth/scan',
    method: 'post',
    params: {
      deviceId: deviceId
    },
    headers: {
      isToken: false
    }
  })
}

/**
 * 获取设备WiFi信息
 * @param {string} deviceId 设备ID
 * @returns {Promise} WiFi信息
 */
export function getWifiList(deviceId) {
  return request({
    url: `/device/device/wifi/${deviceId}`,
    method: 'get',
    headers: {
      isToken: false
    }
  })
}

/**
 * 获取设备广告策略
 * @param {string} deviceId 设备ID
 * @returns {Promise} 广告策略信息
 */
export function getAdStrategy(deviceId) {
  return request({
    url: `/device/device/strategy/${deviceId}`,
    method: 'get',
    headers: {
      isToken: false
    }
  })
}

/**
 * 微信授权认证
 * @param {Object} authData 认证数据
 * @param {string} authData.sessionId 会话ID
 * @param {string} authData.code 微信登录code
 * @param {string} authData.deviceId 设备ID
 * @param {Object} authData.userInfo 用户信息
 * @returns {Promise} 认证结果
 */
export function wechatAuth(authData) {
  return request({
    url: '/wifi/auth/wechat/callback',
    method: 'post',
    params: {
      sessionId: authData.sessionId,
      code: authData.code,
      deviceId: authData.deviceId
    },
    data: {
      userInfo: authData.userInfo
    },
    headers: {
      isToken: false
    }
  })
}

/**
 * 查询认证状态
 * @param {string} sessionId 会话ID
 * @returns {Promise} 认证状态
 */
export function checkAuthStatus(sessionId) {
  return request({
    url: `/wifi/auth/status/${sessionId}`,
    method: 'get',
    headers: {
      isToken: false
    }
  })
}

/**
 * 提交手机号（广告观看完成后）
 * @param {Object} phoneData 手机号数据
 * @param {string} phoneData.sessionId 会话ID
 * @param {string} phoneData.deviceId 设备ID
 * @param {string} phoneData.phoneNumber 手机号码
 * @param {Object} phoneData.userInfo 用户信息
 * @returns {Promise} 提交结果
 */
export function submitPhoneNumber(phoneData) {
  return request({
    url: '/wifi/auth/phone/submit',
    method: 'post',
    data: phoneData,
    headers: {
      isToken: false
    }
  })
}

/**
 * 验证手机验证码
 * @param {Object} verifyData 验证数据
 * @param {string} verifyData.sessionId 会话ID
 * @param {string} verifyData.deviceId 设备ID
 * @param {string} verifyData.phoneNumber 手机号码
 * @param {string} verifyData.verifyCode 验证码
 * @param {Object} verifyData.userInfo 用户信息
 * @returns {Promise} 验证结果
 */
export function verifyCode(verifyData) {
  return request({
    url: '/wifi/auth/code/verify',
    method: 'post',
    data: verifyData,
    headers: {
      isToken: false
    }
  })
}

/**
 * 重新发送验证码
 * @param {Object} resendData 重发数据
 * @param {string} resendData.sessionId 会话ID
 * @param {string} resendData.deviceId 设备ID
 * @param {string} resendData.phoneNumber 手机号码
 * @returns {Promise} 重发结果
 */
export function resendVerifyCode(resendData) {
  return request({
    url: '/wifi/auth/code/resend',
    method: 'post',
    data: resendData,
    headers: {
      isToken: false
    }
  })
}

/**
 * 上报广告观看完成
 * @param {Object} adData 广告数据
 * @param {string} adData.sessionId 会话ID
 * @param {string} adData.deviceId 设备ID
 * @param {number} adData.materialId 素材ID
 * @param {number} adData.duration 观看时长
 * @param {boolean} adData.completed 是否完整观看
 * @returns {Promise} 上报结果
 */
export function reportAdComplete(adData) {
  return request({
    url: '/wifi/auth/ad/complete',
    method: 'post',
    data: adData,
    headers: {
      isToken: false
    }
  })
}

/**
 * 获取服务协议内容
 * @param {string} type 协议类型 (service|privacy)
 * @returns {Promise} 协议内容
 */
export function getAgreements(type = 'all') {
  return request({
    url: '/wifi/auth/agreements',
    method: 'get',
    params: {
      type: type
    },
    headers: {
      isToken: false
    }
  })
}

/**
 * 获取设备信息
 * @param {string} deviceId 设备ID
 * @returns {Promise} 设备信息
 */
export function getDeviceInfo(deviceId) {
  return request({
    url: `/device/device/info/${deviceId}`,
    method: 'get',
    headers: {
      isToken: false
    }
  })
}

/**
 * 获取认证历史
 * @param {string} deviceId 设备ID
 * @param {number} pageNum 页码
 * @param {number} pageSize 页大小
 * @returns {Promise} 认证历史列表
 */
export function getAuthHistory(deviceId, pageNum = 1, pageSize = 10) {
  return request({
    url: '/wifi/auth/history',
    method: 'get',
    params: {
      deviceId,
      pageNum,
      pageSize
    },
    headers: {
      isToken: false
    }
  })
}

/**
 * 获取网络状态
 * @param {string} sessionId 会话ID
 * @returns {Promise} 网络状态
 */
export function getNetworkStatus(sessionId) {
  return request({
    url: `/wifi/auth/network/status/${sessionId}`,
    method: 'get',
    headers: {
      isToken: false
    }
  })
}

/**
 * 断开网络连接
 * @param {string} sessionId 会话ID
 * @returns {Promise} 断开结果
 */
export function disconnectNetwork(sessionId) {
  return request({
    url: `/wifi/auth/disconnect/${sessionId}`,
    method: 'post',
    headers: {
      isToken: false
    }
  })
}

/**
 * 上报用户行为
 * @param {Object} behaviorData 行为数据
 * @param {string} behaviorData.sessionId 会话ID
 * @param {string} behaviorData.action 行为类型
 * @param {Object} behaviorData.data 行为数据
 * @returns {Promise} 上报结果
 */
export function reportBehavior(behaviorData) {
  return request({
    url: '/wifi/auth/behavior/report',
    method: 'post',
    data: behaviorData,
    headers: {
      isToken: false
    }
  })
}

/**
 * 保存用户认证状态
 * @param {Object} authData 认证数据
 * @param {string} authData.deviceId 设备ID
 * @param {string} authData.macAddress MAC地址
 * @param {string} authData.openid 用户OpenID（可选）
 * @returns {Promise} 保存结果
 */
export function saveUserAuth(authData) {
  return request({
    url: '/OpenPlatform/Income/saveUserAuth',
    method: 'post',
    data: authData,
    headers: {
      isToken: false
    }
  })
}

/**
 * 更新用户认证状态（观看完广告后）
 * @param {Object} authData 认证数据
 * @param {string} authData.deviceId 设备ID
 * @param {string} authData.macAddress MAC地址
 * @returns {Promise} 更新结果
 */
export function updateUserAuth(authData) {
  return request({
    url: '/OpenPlatform/Income/updateUserAuth',
    method: 'post',
    data: authData,
    headers: {
      isToken: false
    }
  })
} 